#ifndef TABLA_H
#define TABLA_H

template<class Dominio, class Rango>
class Tabla{

public:

    // Destructor.
    virtual ~Tabla(){};

	// Inserta el elemento de dominio 'd' y rango 'r' en la tabla.
    virtual bool Insertar(const Dominio &d, const Rango &r)=0;

    // Retorna true si la tabla esta vacia
    virtual bool EsVacia()=0;

    // Retorna true si el elemento de dominio 'd' esta definido en la tabla
    virtual bool EstaDefinida(const Dominio &d)=0;

    // Retorna true si el rango 'r' esta definido para el dominio 'd'
    virtual bool Recuperar(const Dominio &d,Rango &r)=0;

    // Retorna la cantidad de elementos de la tabla.
	virtual int CantElementos () = 0;

	//Retorna el rango del elemento con dominio 'd'
	virtual Rango devolverRango(const Dominio &d)= 0;

	//Retorna el rango del elemento en la posicion 'pos'
	virtual Rango ElementoEn(const int pos) = 0;

};
#endif